/*************************************************************
 * 主要介绍析构函数的种类以及用法
 * 1、什么是析构函数
 *    也是类的一种特殊的成员函数，完成一些清理工作
 * 2、为什么需要析构函数
 *    当类对象超出其生命周期时，自动调用析构函数完成对象的清理工作
 * 3、如何使用析构函数
 *    析构函数没有参数，不能重载，没有返回值
 * **********************************************************/
#include "common.h"
using namespace std;

Construct::Construct(int age_, int high_, char* addr_)
{
    age = age_;
    high = high_;
    addr = new char[16];
    strcpy(addr, addr_);
}

Construct::~Construct()
{
    // 释放addr占用的内存
    delete addr;
    addr = nullptr;
}

void Construct::show()
{
    cout << "Construct age = " << age << endl;
    cout << "Construct high = " << high << endl;
    cout << "Construct addr = " << addr << endl;
    cout << "Construct name = " << name << endl;
}

int main()
{
    Construct* con = new Construct(23, 183, "henan");
    con->show();
    return 0;
}